package com.gr.experimental.model.impl.distr.operators;

public class OperatorFactory {

	private static LogicalAndOperator logicalAndOperator = new LogicalAndOperator();
	private static LogicalOrOperator logicalOrOperator = new LogicalOrOperator();
	
	public static LogicalAndOperator logicalAndOperator() {
		return logicalAndOperator;
	}

	public static LogicalOrOperator logicalOrOperator() {
		return logicalOrOperator;
	}

	public static LowerEqualOperator lowerEqualOperator(Class<?> type1, Class<?> type2) {
		return new LowerEqualOperator(type1, type2);
	}

	public static LowerThanOperator lowerThanOperator(Class<?> type1, Class<?> type2) {
		return new LowerThanOperator(type1, type2);
	}

	public static GreaterThanOperator greaterThanOperator(Class<?> type1, Class<?> type2) {
		return new GreaterThanOperator(type1, type2);
	}

	public static GreaterEqualOperator greaterEqualOperator(Class<?> type1, Class<?> type2) {
		return new GreaterEqualOperator(type1, type2);
	}

	public static PlusOperator plusOperator(Class<?> type1,  Class<?> type2) {
		return new PlusOperator(type1, type2);
	}

	public static MinusOperator minusOperator(Class<?> type1,  Class<?> type2) {
		return new MinusOperator(type1, type2);
	}

	public static BinaryOperator timesOperator(Class<?> type1,  Class<?> type2) {
		return new TimesOperator(type1, type2);
	}

	public static BinaryOperator divOperator(Class<?> type1,  Class<?> type2) {
		return new DivOperator(type1, type2);
	}

	public static BinaryOperator equalityOperator(Class<?> type1,  Class<?> type2) {
		return new EqualityOperator(type1, type2);
	}
}
